package jvms;

/**
 * 直接new让一个对象直接进入可恢复状态，因为没有给他的引用命名
 * 让一个对象在finalize方法里重新达到可达状态*
 */
public class FinalizeTest {
    public static FinalizeTest ft = null;
    
    public void info(){
        System.out.println("运行info方法！");
    }
    
    public void finalize(){
        //重新引用始之可达
        ft = this;  
    }
    
    public static void main(String args[]){
        //立即变成可恢复，因为没有命名引用
        new FinalizeTest();
        System.gc();
        System.runFinalization();
        //只有运行了finalize方法，ft才有引用，不然就是报空指针
        FinalizeTest.ft.info();
    }
    
}
